#ifndef _SMARTPIPE_H_
#define _SMARTPIPE_H_

#include "functions_def.h"
#include "../tools/mdReader.h"
#include "../core/queue.hpp"

#define REGISTER_CLASS(x) x##::registe()

namespace sp{

// 用于连接多个Function使其输入输出队列对接
void connect(Function* a, Function* b);

// 用于一个Function连接多个Function
void connectOneToMany(int count, ...);

// 用于多个Function连接一个Function
void connectManyToOne(int count, ...);

// 用于多个Function首尾相连
void connectOneByOne(int count, ...);

// 新建一个队列，一个扇出多个
void connectOneFanMany(int count, ...);

// 新建一个队列，多个收集到一个
void connectManyCollectOne(int count, ...);

// 输出某个Function的帮助信息
void help(Function* a);

// 用于扩展某个Function的instance_number
void expand(Function* ori, int count, ...);

// 扩展instance_number
void expand(Function* ori_0, Function* ori_1, Function* ori_2, int count, ...);

};

#endif